package org.springframework.context.event;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;

/**
 * 容器事件的多播器，理解为事件的发布者发布到多播器，多播器里有监听器列表，根据事件的类型匹配对应的监听器
 */

public interface ApplicationEventMulticaster {
    /**
     * 增加事件监听器
     * @param listener
     */
    void addApplicationListener(ApplicationListener<?> listener);

    /**
     * 移除监听器
     * @param listener
     */
    void removeApplicationListener(ApplicationListener<?> listener);

    /**
     * 分配事件给对应的监听器
     * @param event
     */
    void multicastEvent(ApplicationEvent event);
}
